package cn.xuchunh.math;

/**
 * 约瑟夫环
 * https://blog.csdn.net/u011500062/article/details/72855826
 *
 * 标号0-(n-1)的n个人首尾相接，1到m(m > 1)报数，报到m的退出，求最后一个人的标号
 *
 * f(n,m) = [f(n-1, m) + m] % n (n > 1), 当n=1时， 为0
 *
 * f(n,m) 表示 n 个人报 m 的结果
 *
 *
 *
 * @author yehui
 * @date 2021/2/8
 */
public class JosephRing {

    public int numberOff(int n, int m) {
        if (n < 1 || m < 1) {
            return -1;
        }
        int last = 0;
        for (int i = 2; i <= n; i++) {
            last = (last + m) % i;
        }
        return last;
    }

}
